package interfaceConsole;

/**
 * Impressao
 *
 * @author Bruna
 * @since 08/01/2013
 * @version 1.0
 */
import regraDeNegocio.*;
import java.io.*;
import java.net.URISyntaxException;
import java.util.*;

public class Narrativa {

    private Scanner entrada;
    private Mensageiro mensageiro;
    private Local local;
    private ProcessarTexto processar;
    private Cantil cantil;
    private Cantil cantilExtra;
    private Mapa mapa;

    public Narrativa() {
        entrada = new Scanner(System.in);

        //itens do personagem
        cantil = new Cantil();
        cantilExtra = new Cantil();
        mapa = new Mapa();

        Pessoal[] itens = new Pessoal[3];
        itens[0] = cantil;
        itens[1] = cantilExtra;
        itens[2] = mapa;

        mensageiro = new Mensageiro();
        mensageiro.setItens(itens);

        // mensage
        local = new Local();
    }

    public int entradaDeDadosInteira() {//METODO DE ENTRADA DE DADOS INTEIRA
        int dado = entrada.nextInt();
        return dado;
    }

    public void feedUsuario() {
        System.out.println("Digite qualquer tecla para continuar...");
        entradaDeDadosTexto();
    }

    public void morteMensageiro() {
        System.out.println("Você morreu! Game Over!!!");
        System.exit(0);
    }

    public void paradaEncherCantil() throws FileNotFoundException, URISyntaxException, IOException {

        processar = new ProcessarTexto("1ºDIA DESERTO", 10);
        int opcoes2 = entradaDeDadosInteira();

        if (opcoes2 == 1) {
            System.out.println("Enchendo cantis...........Cantis Cheios");//setar cantis

            

        }//OPINIAO PERGUNTAR O MENSAGEIRO PODE COMEÇAR A MISSAO COM OS CANTIS SECOS
        if (opcoes2 == 2) {
            System.err.println("Você perdeu todos pontos de vida.");
            getMensageiro().perderPontosDeVida(getMensageiro().getPontosDeVida());//foi setado os pontos de vida do mensageiro porque ele não encheu cantis
            System.err.println("Sua água acabou e você agonizou pelo deserto até a morte.");
            System.exit(0);
        }
        if ((opcoes2 != 1 && opcoes2 != 2)) {
            System.err.println("Opção Inválida, jogo finalizado. Game Over");
            System.exit(0);
        }

    }

    public void paradaAlimento() {
        System.out.println("\n" + "Alimento a frente...");
        System.out.println("Para pegá-lo e comê-lo digite [1], para passar adiante digite [2]");
        int opcoes3 = entradaDeDadosInteira();
        if (opcoes3 == 1) {
            System.out.println("Para comer um porco assado digite[1], para comer uma maça digite[2]");
            int opcoes4 = entradaDeDadosInteira();
            if (opcoes4 == 1) {
                getMensageiro().comer(false);
            }
            if (opcoes4 == 2) {
                getMensageiro().comer(true);
            }
            if ((opcoes4 != 1 && opcoes4 != 2)) {
                System.err.println("Opção Inválida, jogo finalizado. Game Over.");
                System.exit(0);
            }
        }
        if (opcoes3 == 2) {
            int pontosAtuais = getMensageiro().getPontosDeVida();
            getMensageiro().perderPontosDeVida(50);
            System.out.println("Você perdeu 50 pontos de vida por não ter se alimentado...");
        }
        if ((opcoes3 != 1 && opcoes3 != 2)) {
            System.err.println("Opção Inválida, jogo finalizado. Game Over.");
            System.exit(0);
        }
    }

    public boolean paradaCanoa() {
        System.out.println("Para atravessar a corredeira com a canoa digite[1]"
                + "\n" + "ou digite[2] para atravessar sem a canoa");
        int opcao1 = entradaDeDadosInteira();
        if (opcao1 == 1) {
            if (getLocal().getCanoa().transportarMensageiro(getMensageiro().getPontosDeVida()) == true) {//PEGAR DO LOCAL E VER COM JEAN
                System.out.println("Parabéns, você conseguiu atravessar corredeira...");
                return true;
            }
            if (getLocal().getCanoa().transportarMensageiro(getMensageiro().getPontosDeVida()) == false) {
                return false;
            }
        }
        if (opcao1 == 2) {
            return false;
        }
        return false;
    }

    public String entradaDeDadosTexto() { //METODO DE ENTRADA DE DADOS STRING

        String dado = entrada.nextLine();
        return dado;
    }

    public void fim() throws FileNotFoundException, URISyntaxException, IOException {//FIM DO DESERTO NARRA A ENTREGA DA CARTA E O FIM DO JOGO
        processar = new ProcessarTexto("FIMAnteriorAoNatural", 6);
        int opcoes5 = entradaDeDadosInteira();
        if (opcoes5 == 0) {
            processar = new ProcessarTexto("FIMDOJOGOnatural", 4);
            System.exit(0);
        } else {
            System.err.println("Jogo finalizado, game over." + "\nCarta não entregue.");
        }

    }

    public void setMensageiro(Mensageiro mensageiro) {
        this.mensageiro = mensageiro;
    }

    public Scanner getEntrada() {
        return entrada;
    }

    public void setEntrada(Scanner entrada) {
        this.entrada = entrada;
    }

    public Local getLocal() {
        return local;
    }

    public void setLocal(Local local) {
        this.local = local;
    }

    public Mensageiro getMensageiro() {
        return mensageiro;
    }

    public void paradaInventario(double localization) throws FileNotFoundException, URISyntaxException, IOException {
        System.out.println("Digite [1] para ver mapa e posição atual, ou [2] para passar adiante...");
        int opcao = entradaDeDadosInteira();
        if (opcao == 1) {
            if (localization == 1) {
                System.out.println("Sua posição atual é Deserto");
            }
            if (localization == 2) {
                System.out.println("Sua posição atual é Charco");
            }
            if (localization == 2.1) {
                System.out.println("Sua posição atual é Charco Norte");
            }
            if (localization == 2.2) {
                System.out.println("Sua posição atual é Charco Sul");
            }

            for (int i = 0; i < mensageiro.getItens().length; i++) {
                if (mensageiro.getItens()[i] instanceof Mapa) {
                    Mapa m1 = (Mapa) mensageiro.getItens()[i];
                    m1.abrirMapa(mensageiro.getPosicaoAtual());
                    break;
                }
            }

        }
        if (opcao == 2) {
        } else {
            System.err.println("Opção inválida, game over...");
            System.exit(0);
        }
    }
}
